#include<stdio.h>
#include<stdlib.h>
#include<mysql/mysql.h>
#define HOST "192.168.217.128"
#define USER "root"
#define PASS "1234567899"
#define DBNAME "gobang"
#define PORT 3306
int main()
{
    // 1.初始化mysql对象

    MYSQL *mysql = mysql_init(NULL); // 如果参数是NULL,那么就会自动在堆上空间
    if (mysql == NULL)
    {
        fprintf(stderr, "mysql_init() failed\n");
        return -1;
    }
    // 2.连接服务器 MYSQL* mysql_real_connect(mysql,host,user,pwd,dbname,port,unix_socket,flag);
    if(mysql_real_connect(mysql,HOST,USER,PASS,DBNAME,PORT,NULL,0)==NULL){
        printf("mysql connect failed: %s \n",mysql_error(mysql));
        mysql_close(mysql);
        return -1;
    }

    // 3.设置客户端字符集 int mysql_set_character_set
    if(mysql_set_character_set(mysql,"utf8")!=0){
        printf("set character failed: %s \n",mysql_error(mysql) );
        mysql_close(mysql);
        return -1;
    }

    //4. 选择要操作的数据库 int mysql_select_db(mysql,dbname)  由于在第二步连接的时候已经连接好了指定的数据库了,此步省略
    

    // 5.执行sql语句 int mysql_query(MYSQL* mysql,char* sql)
    // char* sql ="insert stu values(null,'小明',98,44,98);" ; 
    //char* sql ="update stu set ch=ch+20 where sn=1" ; 
    //    char* sql ="delete from stu where sn=1" ; 
    char* sql ="select * from stu;" ; 
    int ret = mysql_query(mysql,sql);
    if(ret !=0){
        printf("%s \n",sql);
        printf("query failed: %s \n",mysql_error(mysql) );
        mysql_close(mysql);
        return -1;
    }




    //6.如果sql语句是查询语句就需要保存结果到本地 MYSQL_RES* mysql _store_result(MYSQL*mysql);
    MYSQL_RES* res = mysql_store_result(mysql);
    if(res == NULL){
        mysql_close(mysql);
        return -1;
    }

    // 7.获取结果集中的结果的条数 int mysql_num_rows(MYSQL_RES*res),
    // int mysql_num_fields(MYSQL_RES* res) // 列数
    int num_row = mysql_num_rows(res);
    int num_col = mysql_num_fields(res);

    
    // 8.遍历保存到本地的结果集
    for(int i = 0;i<num_row;i++){
        MYSQL_ROW row = mysql_fetch_row(res);
        for(int j= 0;j<num_col;j++){
            printf("%s\t",row[j]); // 默认返回的是字符串
        }
        printf("\n");
    }
    //9.释放结果集
    mysql_free_result(res);
    //10.释放连接
    mysql_close(mysql);
    
    
    return 0;
}